/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package dao;

import util.Dao;
import java.sql.Date;
import java.sql.SQLException;
import java.util.ArrayList;
import modelo.Formacao;
import modelo.InstituicaoCurso;
import modelo.InstituicaoEspecializacao;
import util.Conexao;

/**
 *
 * @author bruno
 */
public class FormacaoDao extends Dao<Formacao> {

    public FormacaoDao() {
        super(new Conexao("Aurea", "aurea", "aurea", Conexao.sqlServerDriver));
    }

    @Override
    protected Formacao novoModelo() {
        return new Formacao();
    }

    @Override
    public boolean gravar(Formacao modelo) {
        return gravarModelo("INSERT INTO tbFormacao(dataInicio,dataFim,,fkNivelAcademico"
                + ",fkDocumento,notaFinal,fkInstituicaoEspecializacao,fkInstituicaoCurso)"
                + "VALUES(?,?,?,?,?,?,?,?)", modelo);
    }

    @Override
    protected void definirParametrosGravar() throws SQLException {
        conexao.getStatement().setDate(1, new Date(modelo.getDataInicio().getTime()));
        conexao.getStatement().setDate(2, new Date(modelo.getDataFim().getTime()));
        conexao.getStatement().setInt(3, modelo.getNivelAcademico().getId());
        conexao.getStatement().setInt(4, modelo.getDocumento().getId());
        conexao.getStatement().setFloat(5, modelo.getNotaFinal());

        int idIC = new InstituicaoCursoDao().getIdInstituicaoCurso(modelo.getCurso().getId(), modelo.getInstituicaoAcademica().getId());
        conexao.getStatement().setInt(6, idIC);

        int idIE = new InstituicaoCursoDao().getIdInstituicaoCurso(modelo.getEspecializacao().getId(), modelo.getInstituicaoAcademica().getId());
        conexao.getStatement().setInt(7, idIE);
    }

    @Override
    public Formacao ler(int id) {        
        return lerModelo("SELECT * FROM tbFormacao WHERE idFormacao =? ", id);
    }

    @Override
    protected void definirParametrosLer() throws SQLException {

        modelo.setDataInicio(conexao.getResultSet().getDate("dataInicio"));
        modelo.setDataFim(conexao.getResultSet().getDate("dataFim"));
        
        modelo.setNivelAcademico(new NivelAcademicoDao().ler(conexao.getResultSet().getInt("fkNivelAcademico")));
        
        modelo.setDocumento(new DocumentoDao().ler(conexao.getResultSet().getInt("fkDocumento")));
         
        modelo.setNotaFinal(conexao.getResultSet().getFloat("notaFinal"));
   
        
        InstituicaoCurso ic = new InstituicaoCursoDao().ler(conexao.getResultSet().getInt("fkInstituicaoCurso"));
        InstituicaoEspecializacao ie = new InstituicaoEspecializacaoDao().ler(conexao.getResultSet().getInt("fkInstituicaoEspecializacao"));
   
        modelo.setInstituicaoAcademica(ic.getInstituicao());
        modelo.setCurso(ic.getCurso());
        modelo.setEspecializacao(ie.getEspecializacao());
    }

    @Override
    public ArrayList<Formacao> lerTodos() {
        return lerTodos("SELECT * FROM tbFormacao");
    }
}
